#pragma once

#include <string>

#include "./shared/MFile.h"
/**
    Interface to the Virtual File System
*/
class IVFSystem
{
public:
    /** Initialize the file system */
    virtual bool Init()=0;
    /** Shutdown the system */
    virtual void Shutdown()=0;

    /** Add a folder to the archive */
    virtual bool AddFolder( const std::string &file )=0;
    /** Add a Pak File to the archive */
    virtual bool AddPakFile( const std::string &file )=0;
    /** Add a Zip File to the archive */
    virtual bool AddZipFile( const std::string &file )=0;

    /** Change the working Dir */
    virtual bool ChangeWorkingDir( const std::string &dir )=0;

    /** Get the working dir */
    virtual const std::string GetWorkingDir()=0;

    /** Get the file directory */
    virtual const std::string GetFileDir( const std::string &file )=0;

    /** Test to see if file exists */
    virtual bool FileExists( const std::string &f )=0;

    /** Create a file for writing */
    virtual MFile* CreateVFile( const std::string &fileName )=0;

    /** Open a file */
    virtual MFile* OpenFile( const std::string &file )=0;
};